package weather

import (
	"encoding/json"
	"fmt"
	"net/http"
)

// 天气数据结构体
type WeatherData struct {
	City    string  `json:"city"`
	Temp    float64 `json:"temp"`
	Weather string  `json:"weather"`
}

// 获取实时天气
func GetRealTimeWeather(location string) (map[string]interface{}, error) {
	// 替换为实际的 API Key
	apiKey := "109d248db8b044898576c816dd26e6e8"
	if apiKey == "your_valid_api_key_here" {
		return nil, fmt.Errorf("无效的 API Key，请替换为有效的 QWeather API Key")
	}

	// 使用 QWeather 的实时天气接口
	url := fmt.Sprintf("https://kx7aapf39m.re.qweatherapi.com/v7/weather/now?location=%s&key=%s", location, apiKey)

	// 发起 HTTP 请求
	resp, err := http.Get(url)
	if err != nil {
		return nil, fmt.Errorf("无法连接到天气服务: %v", err)
	}
	defer resp.Body.Close()

	// 检查 HTTP 状态码是否为 200
	if resp.StatusCode != http.StatusOK {
		var errorResponse map[string]interface{}
		if err := json.NewDecoder(resp.Body).Decode(&errorResponse); err != nil {
			return nil, fmt.Errorf("解析错误响应失败: %v", err)
		}
		errorMessage, ok := errorResponse["message"].(string)
		if !ok {
			errorMessage = "未知错误"
		}
		return nil, fmt.Errorf("天气服务返回错误: %s", errorMessage)
	}

	// 解析 JSON 响应
	var rawResponse map[string]interface{}
	if err := json.NewDecoder(resp.Body).Decode(&rawResponse); err != nil {
		return nil, fmt.Errorf("解析天气数据失败: %v", err)
	}

	// 打印原始响应内容（便于调试）
	//fmt.Printf("原始 API 响应: %+v\n", rawResponse)

	return rawResponse, nil
}
